package com.example.administrator.basedemos.api;


import com.example.administrator.basedemos.bean.GithubUserBean;
import com.example.administrator.basedemos.bean.UserBean;

import java.util.Map;

import io.reactivex.Observable;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;

/**
 * 创建者     ZCL
 * 创建时间   2018/3/15 14:25
 * 描述	      ${TODO}
 * <p>
 * 更新者     $Author$
 * 更新时间   $Date$
 * 更新描述   ${TODO}
 */

public interface GitHubAPi {
    /**
     * 簡單get
     * @return
     */
    @GET("/feeds")
    Call<GithubUserBean> githubUser();


    // users/feeds?id=2
    @GET("/feeds")
    Call<GithubUserBean> githubUserId(@Query("id") int id);

    // users/2
    @GET("/user/{users}")
    Call<GithubUserBean> githubUserOne(@Path("users") String usrid);


    //users/info? name=zhang&id=zcl
    @GET("search/users/")
    Call<GithubUserBean> githubUserParam(@QueryMap() Map<String, String> map);

    @POST("user/token")
    Call<UserBean> Token(@Header("token") String token);


    /**
     * josn格式
     *
     * @param user
     * @return http://login.nipic.com   抓包Json數據：{u'username:u'zhang, u'id:u'zcl}  如果id合username正確則登陸
     */
    @POST("user/new")
    Call<GithubUserBean> createUser(@Body UserBean user);

    /**
     * form表單
     *
     * @param id
     * @param name
     * @return
     */
    @FormUrlEncoded()
    @Headers( {"User-Agent: Retrofit-zcl_App","my_name:zcl","Token:13712618171"})
    @POST("user/edite")
    Call<GithubUserBean> editeUser(@Field("id") String id, @Field("username") String name);

    //注意@header合@headers區分
    @POST("user/token")
    Call<GithubUserBean> tokenLogin(@Header("token") String token);

    @POST("user/login")
    Call<GithubUserBean> login(@Body UserBean userBean);


    /**
     * rx登陸后請求數據
     * @param user
     * @return
     */
    @POST("user/login")
    Observable<GithubUserBean> rxLogin(@Body UserBean user);
    @POST("user/token")
    Observable<UserBean> rxToken(@Header("token") String token);

}
